
// export const sendFile = async (formData: FormData) => {
//     const res = await fetch('/api/sendFile', {
//         method: 'POST',
//         body: formData,
//     })
//     if (!res.ok) {
//         throw new Error('网络响应失败');
//     }
//     return await res.json();
// }

export const sendFile = (
  formData: FormData,
  onProgress?: (progress: number) => void // 进度回调：0 ~ 100
): Promise<{ success: boolean; message: string }> => {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();

    xhr.open('POST', '/api/sendFile');

    // 监听上传进度
    if (onProgress) {
      xhr.upload.onprogress = (event) => {
        if (event.lengthComputable) {
          const percentComplete = Math.round((event.loaded / event.total) * 100);
          onProgress(percentComplete);
        }
      };
    }

    // 成功响应
    xhr.onload = () => {
      if (xhr.status >= 200 && xhr.status < 300) {
        try {
          const data = JSON.parse(xhr.responseText);
          resolve(data);
        } catch (e) {
          reject(new Error('无效的 JSON 响应'));
        }
      } else {
        reject(new Error(`HTTP 错误: ${xhr.status}`));
      }
    };

    // 网络错误
    xhr.onerror = () => {
      reject(new Error('网络请求失败'));
    };

    // 超时（可选）
    xhr.ontimeout = () => {
      reject(new Error('请求超时'));
    };

    // 发送请求
    xhr.send(formData);
  });
};

export const getIps = async () => {
    const res = await fetch('/api/ips', {
        method: 'GET',
    })
    if (!res.ok) {
        throw new Error('网络响应失败');
    }
    return await res.json();
}

export const getFiles = async () => {
    const res = await fetch('/api/files', {
        method: 'GET',
    })
    if (!res.ok) {
        throw new Error('网络响应失败');
    }
    return await res.json();
}

export const downloadFile = (fileName: string) => {
    // const res = await fetch('/api/downloadFile', {
    //     method: 'POST',
    //     body: JSON.stringify({ fileName }),
    //     headers: {
    //         'Content-Type': 'application/json',
    //     }
    // })
    // if (!res.ok) {
    //     throw new Error('网络响应失败');
    // }
    // const blob = await res.blob();
    // const url = URL.createObjectURL(blob);
    // const a = document.createElement('a');
    // a.href = url;
    // a.download = fileName;
    // a.click();
    // URL.revokeObjectURL(url);
    // 构造下载 URL（GET）
    const url = `/api/downloadFile?fileName=${encodeURIComponent(fileName)}`;

    // 方法1：直接跳转（简单，但会中断当前页面？）
    // window.location.href = url;

    // 方法2：创建隐藏 <a> 并点击（推荐）
    const a = document.createElement('a');
    a.href = url;
    a.download = fileName; // 提示浏览器这是下载
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
}
